<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>打赏支持</title>
    <!-- 引入Bootstrap样式 -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <!-- 引入Bootstrap图标 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">
    <style>
        /* 基础样式 */
        body {
            background-color: #f8f9fa;
            height: 100vh; /* 使body充满整个视口高度 */
            display: flex; /* 启用flex布局 */
            justify-content: center; /* 水平居中 */
            align-items: center; /* 垂直居中 */
            margin: 0;
        }
        
        /* 卡片样式 */
        .card {
            border-radius: 15px;
            box-shadow: 0 6px 15px rgba(0,0,0,0.1);
            width: 400px; /* 固定宽度 */
            border: 1px solid #e0e0e0; /* 浅灰色边框 */
        }
        
        /* 卡片头部 - 使用现代化深灰黑 */
        .card-header {
            background: #333; /* 现代化深灰黑 */
            color: white;
            border-radius: 15px 15px 0 0 !important;
        }
        
        /* 二维码容器样式 */
        #qrcode {
            margin: 20px auto;
            padding: 15px;
            background: white;
            border-radius: 12px;
            display: inline-block;
        }
        
        /* 二维码圆角效果 */
        #qrcode canvas {
            border-radius: 8px;
            border: 1px solid #eee;
        }
        
        /* 二维码外层容器（用于定位logo） */
        .qrcode-container { 
            position: relative; 
            text-align: center; 
        }
        
        /* 支付宝logo样式 */
        .qrcode-logo {
            position: absolute;
            width: 40px;
            height: 40px;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            background: white;
            border-radius: 8px;
            padding: 5px;
            border: 1px solid #eee;
        }
        
        /* 输入框装饰样式 */
        .input-group-text {
            background: #333; /* 现代化深灰黑 */
            color: white;
            border: none;
        }
    </style>
</head>
<body>
    <!-- 主卡片容器 -->
    <div class="card">
        <!-- 卡片头部 -->
        <div class="card-header text-center">
            <h4><i class="bi bi-gift-fill"></i> 打赏支持</h4>
        </div>
        
        <!-- 卡片内容 -->
        <div class="card-body">
            <!-- 金额输入区域 -->
            <div class="mb-3">
                <label class="form-label">请输入打赏金额 (1~999元)</label>
                <div class="input-group">
                    <span class="input-group-text"><i class="bi bi-currency-yen"></i></span>
                    <input type="number" id="amount" class="form-control" 
                           min="1" max="999" step="1" 
                           placeholder="例如：10" value="10">
                    <span class="input-group-text">元</span>
                </div>
                <div class="form-text text-muted">感谢您的支持！</div>
            </div>

            <!-- 二维码展示区域 -->
            <div class="text-center mt-4">
                <div class="qrcode-container">
                    <div id="qrcode"></div>
                    <div class="qrcode-logo">
                        <!-- 支付宝图标 -->
                        <img src="https://www.alipay.com/favicon.ico" 
                             width="30" height="30" alt="支付宝">
                    </div>
                </div>
                <p class="mt-2">使用支付宝扫码打赏</p>
            </div>
        </div>
        
        <!-- 卡片底部 -->
        <div class="card-footer text-muted text-center">
            <small>有任何疑问请联系作者</small>
        </div>
    </div>

    <!-- 引入JS库 -->
    <!-- Bootstrap JS -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <!-- QRCode生成库 -->
    <script src="https://cdn.jsdelivr.net/npm/qrcode@1.5.1/build/qrcode.min.js"></script>
    
    <script>
        /**
         * 防抖函数 (500ms)
         * @param {Function} func 要执行的函数
         * @param {number} wait 等待时间(毫秒)
         */
        function debounce(func, wait) {
            let timeout;
            return function() {
                const context = this, args = arguments;
                clearTimeout(timeout);
                timeout = setTimeout(() => func.apply(context, args), wait);
            };
        }

        /**
         * 生成支付宝支付链接
         * @param {number} amount 金额
         * @returns {string} 支付宝支付链接
         */
        function generateAlipayUrl(amount) {
            const bizData = {
                s: "money", // 固定值，表示转账业务
                u: "20888xxxxxxxxxxx", // 收款方支付宝账号ID，获取地址：https://open.alipay.com/develop/manage/account/manage
                a: amount.toFixed(0), // 金额(整数)
                m: "打赏支持" // 固定转账备注
            };
            return `alipays://platformapi/startapp?appId=20000123&actionType=scan&biz_data=${encodeURIComponent(JSON.stringify(bizData))}`;
        }

        /**
         * 生成二维码
         */
        function generateQRCode() {
            const amountInput = document.getElementById('amount');
            let amount = parseInt(amountInput.value);
            
            // 验证金额范围
            if (isNaN(amount)) amount = 10; // 默认值
            amount = Math.max(1, Math.min(999, amount)); // 限制在1-999之间
            amountInput.value = amount; // 更新输入框值
            
            // 生成二维码
            QRCode.toCanvas(generateAlipayUrl(amount), {
                width: 180, // 二维码宽度
                color: { dark: '#333', light: '#ffffff' }, // 深灰黑色二维码
                margin: 1 // 边距
            }, function(error, canvas) {
                const qrcodeElement = document.getElementById('qrcode');
                qrcodeElement.innerHTML = ''; // 清空原有内容
                
                if (error) {
                    qrcodeElement.innerHTML = '<p class="text-danger">生成二维码失败</p>';
                    return;
                }
                
                canvas.style.borderRadius = '8px'; // 添加圆角
                qrcodeElement.appendChild(canvas); // 添加到DOM
            });
        }

        // 页面加载完成后初始化
        document.addEventListener('DOMContentLoaded', function() {
            // 生成初始二维码
            generateQRCode();
            
            // 监听金额输入变化(带防抖)
            document.getElementById('amount').addEventListener('input', 
                debounce(generateQRCode, 500)
            );
        });
    </script>
</body>
</html>